<html>
<head><meta charset="utf-8"><title>re. coherence · wg-traits · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/index.html">wg-traits</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html">re. coherence</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="164185726"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164185726" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164185726">(Apr 25 2019 at 16:24)</a>:</h4>
<p>/me mulls replacing "coherence" with "canonicity" since that's probably more accurate</p>



<a name="164185897"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164185897" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> csmoe <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164185897">(Apr 25 2019 at 16:26)</a>:</h4>
<p>(<span class="user-mention" data-user-id="126931">@centril</span> sorry for cutting in, is there any open materials about rust coherence? rfc, paper etc)</p>



<a name="164186062"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164186062" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164186062">(Apr 25 2019 at 16:28)</a>:</h4>
<p><span class="user-mention" data-user-id="116773">@csmoe</span> you may want to start with <a href="http://blog.ezyang.com/2014/07/type-classes-confluence-coherence-global-uniqueness/" target="_blank" title="http://blog.ezyang.com/2014/07/type-classes-confluence-coherence-global-uniqueness/">http://blog.ezyang.com/2014/07/type-classes-confluence-coherence-global-uniqueness/</a></p>
<p>rfcs include:<br>
- <a href="https://github.com/rust-lang/rfcs/pull/2451" target="_blank" title="https://github.com/rust-lang/rfcs/pull/2451">https://github.com/rust-lang/rfcs/pull/2451</a></p>
<p>this links to a bunch of other places</p>



<a name="164186082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164186082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164186082">(Apr 25 2019 at 16:28)</a>:</h4>
<p>I suspect most papers about coherence are in a Haskell setting</p>



<a name="164186120"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164186120" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> csmoe <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164186120">(Apr 25 2019 at 16:29)</a>:</h4>
<p><span class="user-mention" data-user-id="126931">@centril</span> really thanks <span aria-label="slight smile" class="emoji emoji-1f642" role="img" title="slight smile">:slight_smile:</span></p>



<a name="164186121"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164186121" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164186121">(Apr 25 2019 at 16:29)</a>:</h4>
<p>Rust enforces canonicity, which is a stronger property than coherence</p>



<a name="164186140"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164186140" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164186140">(Apr 25 2019 at 16:29)</a>:</h4>
<p>canonicity being the same as "global uniqueness of implementations"</p>



<a name="164186208"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164186208" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164186208">(Apr 25 2019 at 16:30)</a>:</h4>
<p><span class="user-mention" data-user-id="116773">@csmoe</span> welcome!</p>



<a name="164186643"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164186643" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164186643">(Apr 25 2019 at 16:34)</a>:</h4>
<p><span class="user-mention" data-user-id="116773">@csmoe</span>  if you are familiar with the concept of proof relevance... if we consider a trait to be a proposition and an implementation of a trait for a given type to be a witness / proof of said proposition, then canonicity can be seen as proof irrelevance</p>



<a name="164186654"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164186654" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> detrumi <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164186654">(Apr 25 2019 at 16:34)</a>:</h4>
<p>Oh cool, so Rust basically does the same thing as Haskell (without <code>OverlappingInstances</code>and <code>IncoherentInstances</code>)</p>



<a name="164186711"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164186711" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164186711">(Apr 25 2019 at 16:35)</a>:</h4>
<p><span class="user-mention" data-user-id="125131">@detrumi</span>  and no orphans as well <span aria-label="slight smile" class="emoji emoji-1f642" role="img" title="slight smile">:slight_smile:</span></p>



<a name="164186864"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164186864" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> detrumi <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164186864">(Apr 25 2019 at 16:36)</a>:</h4>
<p>/me is pleasantly surprised to find so many Haskell ideas in Rust <span aria-label="slight smile" class="emoji emoji-1f642" role="img" title="slight smile">:slight_smile:</span></p>



<a name="164186912"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164186912" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164186912">(Apr 25 2019 at 16:37)</a>:</h4>
<p><span class="user-mention" data-user-id="125131">@detrumi</span> other than that, the basic idea is the same but how it is achieved is likely different; "coherence" is a Haskell term after all ^^</p>



<a name="164187032"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164187032" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> detrumi <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164187032">(Apr 25 2019 at 16:38)</a>:</h4>
<p>"is likely different", what does that mean?</p>



<a name="164187094"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164187094" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> csmoe <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164187094">(Apr 25 2019 at 16:39)</a>:</h4>
<p><span class="user-mention" data-user-id="126931">@centril</span> know nothing <span aria-label="joy" class="emoji emoji-1f602" role="img" title="joy">:joy:</span> I need to understand the docs you gave first.</p>



<a name="164187237"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164187237" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164187237">(Apr 25 2019 at 16:40)</a>:</h4>
<p><span class="user-mention" data-user-id="125131">@detrumi</span>  the mechanism you use to prevent overlapping instances doesn't have to be the same</p>



<a name="164187253"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/re.%20coherence/near/164187253" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> detrumi <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/re.2E.20coherence.html#164187253">(Apr 25 2019 at 16:40)</a>:</h4>
<p>Ah, in that sense</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>